package swimv2gm.bl.util;

/**
 * Versione ridotta dei dati di un utente registrato, usata negli elenchi per
 * evitare di passare l'intero profilo quando non necessario. Questa classe non
 * rappresenta alcun oggetto nella base di dati.
 * 
 * @author Matteo Gallesio
 */
public class UserData implements java.io.Serializable {

	private static final long serialVersionUID = -513262255857755907L;

	private long uid;
	private String nome;
	private String cognome;

	/**
	 * Costruisce un nuovo oggetto UserData a partire dai dati forniti.
	 * 
	 * @param uid
	 *            id dell'utente
	 * @param nome
	 *            nome dell'utente
	 * @param cognome
	 *            cognome dell'utente
	 */
	public UserData(long uid,String nome,String cognome) {
		this.uid = uid;
		this.nome = nome;
		this.cognome = cognome;
	}

	/**
	 * Crea un nuovo oggetto UserData a partire dai dati corrispondenti
	 * dell'utente fornito.
	 * 
	 * @param u
	 *            l'utente
	 */
	public UserData(swimv2gm.bl.domain.User u) {
		this.uid = u.getId();
		this.nome = u.getNome();
		this.cognome = u.getCognome();
	}

	/**
	 * Restituisce l'id dell'utente.
	 * 
	 * @return l'id
	 */
	public long getId() {
		return uid;
	}

	/**
	 * Restituisce il nome dell'utente
	 * 
	 * @return il nome
	 */
	public String getNome() {
		return nome;
	}

	/**
	 * Restituisce il cognome dell'utente
	 * 
	 * @return il nome
	 */
	public String getCognome() {
		return cognome;
	}

	/**
	 * Verifica campo per campo l'uguaglianza tra questo oggetto e l'oggetto
	 * fornito.
	 * 
	 * @param o
	 *            l'oggetto da confrontare
	 * @returns <code>true</code> se il parametro è un oggetto UserData di cui
	 *          tutti i campi sono uguali a questo, <code>false</code>
	 *          altrimenti.
	 */
	@Override
	public boolean equals(Object o) {
		if (o == null || !(o instanceof UserData))
			return false;
		UserData u = (UserData)o;
		return this.getId() == u.getId() && this.getNome().equals(u.getNome())
				&& this.getCognome().equals(u.getCognome());
	}
}
